#pragma once

#include <string>

struct ISAXXMLReader;

namespace XMLSAX
{
	namespace Common
	{
		class ICallDispatcher;
	}
}

namespace XMLSAX
{
	namespace Core
	{
		class ParseHandler;
		class ParsingErrorHandler;

		class __declspec(dllexport) XMLParser
		{
		private:
			ISAXXMLReader *pReader;
			ParseHandler *pHandler;
			ParsingErrorHandler *pErrorHandler;
			XMLSAX::Common::ICallDispatcher *pDispatcher;

		public:
			XMLParser();
			virtual ~XMLParser();

			void SetCallDispatcher(XMLSAX::Common::ICallDispatcher *dispatcher);
			void ParseDocument(const std::wstring& fileName);
		};
	}
}